package binary_tree.LeetCode;
// class TreeNode {
//      int val;
//      TreeNode left;
//      TreeNode right;
//      TreeNode() {}
//     TreeNode(int val) { this.val = val; }
//     TreeNode(int val, TreeNode left, TreeNode right) {
//          this.val = val;
//          this.left = left;
//          this.right = right;
//      }
//  }
public class Num572 {
 public boolean isSubtree(TreeNode root, TreeNode subRoot) {
if(root==null&&subRoot==null){
 return true;
}
if(root==null||subRoot==null){
 return false;
}
return isSameTree(root,subRoot)||isSubtree(root.left,subRoot)||isSubtree(root.right,subRoot);
 }
 public boolean isSameTree(TreeNode p,TreeNode q){
  if(p==null&&q==null){
   return  true;
  }
  if(p==null||q==null){
   return false;
  }
  if(p.val!=q.val){
   return false;
  }
  return isSameTree(p.left,q.left)||isSameTree(p.right,q.right);
 }
 }

